package co.com.pd.dao.impl;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;

import co.com.pd.dao.PrestamoDaoInt;
import co.com.pd.dao.cfg.HibernateSessionFactory;
import co.com.pd.dtos.PrestamoDto;
import co.com.pd.exception.DaoException;
/**
 * 
 * @author Usuario
 *Implementacion para la clase PretamoDao
 */
public class PrestamoDaoImpl implements PrestamoDaoInt{
	/**
	 * Realizacion de la logica para la persistenacia de la solicitud de un prestamo por medio 
	 * de la entidad prestamoDto 
	 */
	@Override
	public void realizarSolicitudPrestamo(PrestamoDto prestamodto) throws DaoException
	{
		
		Session session = null;
		Transaction tx = null;
		/**
		 * se crea la logia para persistir la entidad prestamos tdo
		 */
		try{
			session = HibernateSessionFactory.getInstance().getSession();
			
			tx = session.beginTransaction();
			session.save(prestamodto);
			tx.commit();
			
			/**
			 * Manejo de las excepciones
			 */
		}catch(HibernateException e){
			throw new  DaoException(e);
		}finally{
			
			if(session != null)
				session.close();
		}
		
	}
	
	/**
	 * Realizacion de la logica para realizar la validacion de una solicutud de 
	 * prestamo
	 */
	@Override
	public void validarSolicitudPrestamo(PrestamoDto prestamodto) throws DaoException
	{
		
		Session session = null;
		Transaction tx = null;
		
		/**
		 * Se crea la logica para la persistencia de la solicitud de prestamo.
		 */
		try{
			
	
			 
			session = HibernateSessionFactory.getInstance().getSession();
			tx = session.beginTransaction();
			PrestamoDto prestamodto1  = (PrestamoDto) session.get(PrestamoDto.class,  prestamodto.getId_prestamos());
			 prestamodto1.setEstadoprestamo(prestamodto.getEstadoprestamo());
			session.update(prestamodto1);
			tx.commit();
			
			/**
			 * Menejo de las excepciones
			 */
		}catch(HibernateException e){
			throw new  DaoException(e);
		}finally{
			
			if(session != null)
				session.close();
		}
		
	}

}
